import java.util.Stack;

public class code3 {
//    力扣 150 逆波兰表达式
private boolean isNumber(String token) {
    if(("+".equals(token)) || ("-".equals(token)) || ("*".equals(token)) || ("/".equals(token))) {
        return false;
    }
    return true;
}

    public int evalRPN(String[] tokens) {
        // 直接使用栈就可以解决
        // 看到数字直接先压入栈中，当发现不是数字时，此时直接弹出两个数字计算即可
        Stack<Integer> stack = new Stack<>();

        int len = tokens.length;
        for(int i = 0; i < len; i++) {
            // 判断当前位置的元素是否为 数字 选择是否压入栈中
            String token = tokens[i];
            if(isNumber(token)) {
                stack.push(Integer.parseInt(tokens[i]));
            } else {
                int num2 = stack.pop();
                int num1 = stack.pop();
                switch(token) {
                    case "+":
                        stack.push(num1 + num2);
                        break;
                    case "-":
                        stack.push(num1 - num2);
                        break;
                    case "*":
                        stack.push(num1 * num2);
                        break;
                    case "/":
                        stack.push(num1 / num2);
                        break;
                }
            }
        }
        return stack.pop();
    }
}
